髿§èœã³ã³ãã¥ãŒãã£ã³ã°ïŒHPCïŒã«ãããåå®å šããã°ã©ãã³ã°ã®å©ç¹ãæ¢æ±ããåã·ã¹ãã ãå®è£ æŠç¥ãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ãšããŒã¿åæã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãæ€èšŒããŸãã
åå®å šãªã¹ãŒããŒã³ã³ãã¥ãŒãã£ã³ã°ïŒé«æ§èœã³ã³ãã¥ãŒãã£ã³ã°ã®åå®è£
髿§èœã³ã³ãã¥ãŒãã£ã³ã°ïŒHPCïŒã·ã¹ãã ã¯ãè€éãªç§åŠçããã³ãšã³ãžãã¢ãªã³ã°ã®èª²é¡ã«åãçµãäžã§ãŸããŸãéèŠã«ãªã£ãŠããŸãããããã®ã·ã¹ãã ã¯ãå€ãã®å Žåãæ°åã®çžäºæ¥ç¶ãããããã»ããµã§æ§æãããŠãããå ç¢ã§ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãå¿ èŠã§ããåŸæ¥ã®HPCããã°ã©ãã³ã°ã¯ãå€ãã®å ŽåãFortranãC/C++ãªã©ã®èšèªã«äŸåããŠããŸããããããã®èšèªã¯é«æ§èœã§ããäžæ¹ã§ããã§ãã¯ãããŠããªãå倿ãã¡ã¢ãªç®¡çã®åé¡ãããã³äžŠè¡æ§ã®ãã°ããçãããšã©ãŒã®åœ±é¿ãåããããå¯èœæ§ããããŸããåå®å šããã°ã©ãã³ã°ã¯ãã³ã³ãã€ã«æã«å³å¯ãªã«ãŒã«ãé©çšãããšã©ãŒãæ©æã«ãã£ããããã³ãŒãã®ä¿å®æ§ãšä¿¡é Œæ§ãåäžãããããšã§ãé åçãªä»£æ¿ææ®µãæäŸããŸãããã®èšäºã§ã¯ãHPCã®ã³ã³ããã¹ãã«ãããåå®å šããã°ã©ãã³ã°ã®å©ç¹ã課é¡ãããã³å®è£ æŠç¥ã«ã€ããŠèª¬æããŸãã
HPCã«ãããåå®å šæ§ã®å¿ èŠæ§
HPCã¢ããªã±ãŒã·ã§ã³ã¯éåžžãå€§èŠæš¡ã§è€éã§ãããæ°çŸäžè¡ã®ã³ãŒããå«ãããšããããããŸãããããã®ã³ãŒãã¯ãå€§èŠæš¡ãªããŒã ã«ãã£ãŠé »ç¹ã«éçºããã³ä¿å®ããããããã³ãŒãã®å¯èªæ§ãšä¿å®æ§ãéèŠã«ãªããŸããæŽæ°ãæµ®åå°æ°ç¹æ°ãäºæãã颿°ã«æž¡ããªã©ã®åãšã©ãŒã¯ãäºæž¬äžå¯èœãªåäœããããã°ãå°é£ãªãšã©ãŒã«ã€ãªããå¯èœæ§ããããŸããã·ãã¥ã¬ãŒã·ã§ã³ãæ°æ¥ãŸãã¯æ°é±éå®è¡ãããå¯èœæ§ãããHPCã®ã³ã³ããã¹ãã§ã¯ããã®ãããªãšã©ãŒã¯ããªãœãŒã¹ã®æµªè²»ãçµæã®é å»¶ãšããç¹ã§éåžžã«ã³ã¹ãããããå¯èœæ§ããããŸãã
ããã«ãç°çš®ããã»ããµïŒCPUãGPUãFPGAïŒãå«ãHPCã¢ãŒããã¯ãã£ã®è€éãã®å¢å€§ã«ãããããé«åºŠãªããã°ã©ãã³ã°ã¢ãã«ãæ±ããããŠããŸããåå®å šãªèšèªã¯ããããã®è€éãªã¢ãŒããã¯ãã£ã管çããããã®ããåªããæœè±¡åãæäŸããéçºè ãããç§»æ€æ§ãšå¹çæ§ã®é«ãã³ãŒããäœæã§ããããã«ããŸãã
HPCã«ãããåå®å šæ§ã®å ·äœçãªå©ç¹ã以äžã«ç€ºããŸãã
- ãããã°æéã®ççž®ïŒåãšã©ãŒã¯ã³ã³ãã€ã«æã«ãã£ããããããããã©ã³ã¿ã€ã ã¯ã©ãã·ã¥ãé²ãããããã°ãç°¡çŽ åããŸãã
 - ã³ãŒãã®ä¿¡é Œæ§ã®åäžïŒåå®å šãªèšèªã¯ããå³å¯ãªã«ãŒã«ãé©çšãã埮åŠãªãã°ã®å¯èœæ§ãæžãããŸãã
 - ã³ãŒãã®ä¿å®æ§ã®åäžïŒæç€ºçãªåæ å ±ã¯ãã³ãŒãã®çè§£ãšå€æŽã容æã«ããŸãã
 - ã³ãŒãã®ç§»æ€æ§ã®åŒ·åïŒåå®å šãªèšèªã¯ãç°çš®ã¢ãŒããã¯ãã£ã管çããããã®ããåªããæœè±¡åãæäŸã§ããŸãã
 - ã³ãŒãã®æé©åã®ä¿é²ïŒã³ã³ãã€ã©ã¯åæ å ±ãå©çšããŠãããç©æ¥µçãªæé©åãå®è¡ã§ããŸãã
 
åã·ã¹ãã ã®çè§£
åã·ã¹ãã ã¯ãããã°ã©ãã³ã°èšèªã§ããŒã¿åãã©ã®ããã«å²ãåœãŠããã䜿çšããããã管çããäžé£ã®ã«ãŒã«ã§ããç°ãªãããã°ã©ãã³ã°èšèªã¯ãããããç¬èªã®é·æãšçæãæã€ç°ãªãåã·ã¹ãã ãæ¡çšããŠããŸããåã·ã¹ãã ã®äž»ãªç¹åŸŽã¯æ¬¡ã®ãšããã§ãã
- éçåä»ã vs. åçåä»ãïŒéçåä»ãèšèªã§ã¯ãåãã§ãã¯ã¯ã³ã³ãã€ã«æã«å®è¡ãããŸããåçåä»ãèšèªã§ã¯ãåãã§ãã¯ã¯å®è¡æã«å®è¡ãããŸããéçåä»ãã¯ããšã©ãŒãæ©æã«ãã£ããã§ãããšããå©ç¹ããããŸãããåçåä»ãã¯ããé«ãæè»æ§ãæäŸããŸãã
 - 匷ãåä»ã vs. 匱ãåä»ãïŒåŒ·ãåä»ãèšèªã¯å³å¯ãªåã«ãŒã«ãé©çšããæé»çãªå倿ãé²ããŸãã匱ãåä»ãèšèªã¯ããå€ãã®æé»çãªå€æãèš±å¯ãããããäºæããªãåäœã«ã€ãªããå¯èœæ§ããããŸãã
 - æç€ºçãªåä»ã vs. æé»çãªåä»ãïŒæç€ºçãªåä»ãèšèªã§ã¯ãããã°ã©ãã¯å倿°ã®åãæç€ºçã«å®£èšããå¿ èŠããããŸããæé»çãªåä»ãèšèªã§ã¯ãã³ã³ãã€ã©ã¯ã³ã³ããã¹ãã«åºã¥ããŠåãæšè«ããŸãã
 - åæ§é å vs. æ§é åïŒåæ§é åä»ãã¯ãååã«åºã¥ããŠåãæ¯èŒããŸããæ§é åä»ãã¯ãæ§é ã«åºã¥ããŠåãæ¯èŒããŸãã
 
ç°ãªãåã·ã¹ãã ãæã€ããã°ã©ãã³ã°èšèªã®äŸïŒ
- C/C++ïŒéçåä»ãã匱ãåä»ããæç€ºçãªåä»ããåæ§é åä»ãããããã®èšèªã¯HPCã§åºã䜿çšãããŠããŸãããåå®å šæ§ãéãããŠããããããšã©ãŒãåé¿ããã«ã¯æ³šææ·±ãããã°ã©ãã³ã°ãå¿ èŠã§ãã
 - FortranïŒéçåä»ãã匱ãåä»ããæç€ºçãªåä»ããåæ§é åä»ããC/C++ãšåæ§ã«ãFortranã¯HPCã®å®çªã§ããã匷åãªåå®å šæ©èœããããŸããã
 - JavaïŒéçåä»ãã匷ãåä»ããæç€ºçãªåä»ããåæ§é åä»ããJavaã¯C/C++ããã³Fortranãããåªããåå®å šæ§ãæäŸããŸããããã®ããã©ãŒãã³ã¹ã¯HPCã§ã¯æžå¿µãããå¯èœæ§ããããŸãã
 - RustïŒéçåä»ãã匷ãåä»ããæç€ºçãªåä»ãïŒåæšè«ä»ãïŒãåæ§é åä»ããRustã¯ãå®å šæ§ãšããã©ãŒãã³ã¹ãåªå ããææ°ã®èšèªã§ãããHPCã®ææãªåè£ã§ãã
 - HaskellïŒéçåä»ãã匷ãåä»ããæé»çãªåä»ããæ§é åä»ããHaskellã¯ã匷åãªåã·ã¹ãã ãåãã颿°åèšèªã§ãããåªããåå®å šæ§ãæäŸããŸãããHPCéçºè ã«ãšã£ãŠã¯åŠç¿æ²ç·ãæ¥ã«ãªãå¯èœæ§ããããŸãã
 - PythonïŒåçåä»ãã匷ãåä»ããæé»çãªåä»ããåæ§é åä»ãïŒã»ãšãã©ã®å ŽåïŒãPythonã¯ãã¹ã¯ãªããäœæãšããŒã¿åæã®ããã«ç§åŠã³ã³ãã¥ãŒãã£ã³ã°ã§åºã䜿çšãããŠããŸãããå€ãã®HPCã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªããã©ãŒãã³ã¹ããããŸãããåãã³ãïŒPython 3.5ã§å°å ¥ïŒã䜿çšãããšããªãã·ã§ã³ã®éçåãã§ãã¯ãå¯èœã«ãªããŸãã
 
HPCåãã®åå®å šãªèšèªïŒè©³çްãªèå¯
ããã€ãã®èšèªã¯ãåå®å šæ§ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåããŠãããHPCã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããŸããããã€ãã®èåãªäŸãèŠãŠã¿ãŸãããã
Rust
Rustã¯ãå®å šæ§ãé床ãããã³äžŠè¡æ§åãã«èšèšãããææ°ã®ã·ã¹ãã ããã°ã©ãã³ã°èšèªã§ãããã®äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
- ã¡ã¢ãªå®å šæ§ïŒRustã®æææš©ã·ã¹ãã ã¯ãã³ã³ãã€ã«æã«ã¡ã¢ãªãªãŒã¯ããã³ã°ãªã³ã°ãã€ã³ã¿ãããã³ããŒã¿ç«¶åãé²ããŸãã
 - ãŒãã³ã¹ãæœè±¡åïŒRustã¯ãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªãã匷åãªæœè±¡åãæäŸããŸãã
 - äžŠè¡æ§ïŒRustã®æææš©ã·ã¹ãã ã«ããã䞊è¡ããã°ã©ãã³ã°ãããå®å šãã€ç°¡åã«ãªããŸãã
 - C/C++ãšã®çµ±åïŒRustã¯æ¢åã®C/C++ã³ãŒããšç°¡åã«çžäºéçšã§ããŸãã
 
Rustã¯ã匷åãªå®å šæ§ã®ä¿èšŒãåãã髿§èœãæäŸã§ãããããHPCã§æ³šç®ãéããŠããŸããããã€ãã®HPCãããžã§ã¯ãã§ã¯ãçŸåšRustã䜿çšããŠããŸããæ¬¡ã«äŸã瀺ããŸãã
- ExaBiomeïŒãšã¯ãµã¹ã±ãŒã«ã³ã³ãã¥ãŒãã£ã³ã°çšã®Rustã§ãã€ãªã€ã³ãã©ããã£ã¯ã¹ããŒã«ãéçºãããããžã§ã¯ãã
 - Parity TechnologiesïŒãããã¯ãã§ãŒã³éçºããã³é¢é£ããHPCã¢ããªã±ãŒã·ã§ã³ã«Rustã䜿çšã
 
äŸïŒRustïŒïŒ
            
fn add(x: i32, y: i32) -> i32 {
    x + y
}
fn main() {
    let a: i32 = 10;
    let b: i32 = 20;
    let result: i32 = add(a, b);
    println!("Result: {}", result);
}
            
          
        ãã®äŸã§ã¯ã`add`颿°ã¯ã2ã€ã®`i32`ïŒ32ãããæŽæ°ïŒåŒæ°ãåãå ¥ãã`i32`ãè¿ãããã«æç€ºçã«åæå®ãããŠããŸããRustã³ã³ãã€ã©ã¯ãããã®åå¶çŽãé©çšããæµ®åå°æ°ç¹æ°ã`add`颿°ã«æž¡ããªã©ã®ãšã©ãŒãé²ããŸãã
Chapel
Chapelã¯ãå¹ åºãHPCã¢ãŒããã¯ãã£ã§ã®çç£æ§ãšããã©ãŒãã³ã¹åãã«èšèšããã䞊åããã°ã©ãã³ã°èšèªã§ãããã®äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
- ã°ããŒãã«ãã¥ãŒæœè±¡åïŒChapelã¯ãããã°ã©ãã䞊åèšç®ãã°ããŒãã«ãªæ¹æ³ã§èããããšãã§ããæœè±¡åãæäŸããŸãã
 - ããŒã«ãªãã£å¶åŸ¡ïŒChapelã䜿çšãããšãããã°ã©ãã¯äžŠåãã·ã³ã®ç°ãªãããŒããžã®ããŒã¿ãšèšç®ã®é 眮ãå¶åŸ¡ã§ããŸãã
 - ãŠãŒã¶ãŒå®çŸ©ã®äžŠåæ§ïŒChapelã䜿çšãããšãããã°ã©ãã¯ç¬èªã®äžŠåæ§é ãå®çŸ©ã§ããŸãã
 - 匷ãåä»ãïŒChapelã«ã¯ãã³ã³ãã€ã«æã«ãšã©ãŒããã£ãããã匷åãªåã·ã¹ãã ããããŸãã
 
Chapelã¯ãHPCåãã«ç¹å¥ã«èšèšãããŠãããå€§èŠæš¡ã·ã¹ãã ã§ã®äžŠåããã°ã©ãã³ã°ãšããŒã¿ç®¡çã®èª²é¡ã«å¯Ÿå¿ããŠããŸããããã°ã©ãããªãã£ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåããŠããŸãã
äŸïŒChapelïŒïŒ
            
proc add(x: int, y: int): int {
  return x + y;
}
proc main() {
  var a: int = 10;
  var b: int = 20;
  var result: int = add(a, b);
  writeln("Result: ", result);
}
            
          
        ãã®Chapelã®äŸã¯Rustã®äŸãšäŒŒãŠãããæç€ºçãªå宣èšãšã³ã³ãã€ã«æã®åãã§ãã¯ã瀺ããŠããŸãã
FortressïŒæŽå²çïŒ
Fortressã¯ãSun Microsystemsã«ãã£ãŠéçºããã䞊åããã°ã©ãã³ã°èšèªã§ãããç§åŠã³ã³ãã¥ãŒãã£ã³ã°ã«é«æ§èœãšçç£æ§ãæäŸããããšãç®çãšããŠããŸãããFortressã¯çŸåšç©æ¥µçã«éçºãããŠããŸãããããã®èšèšååã¯ChapelãJuliaãªã©ã®ä»ã®èšèªã®éçºã«åœ±é¿ãäžããŸãããFortressã¯ã匷åãªåã·ã¹ãã ãèªå䞊ååã®ãµããŒããããã³æ°åŒè¡šèšã«éç¹ã眮ããŠããŸããã
HPCã«ãããåå®å šæ§ã®å®è£ æŠç¥
HPCã¢ããªã±ãŒã·ã§ã³ã«åå®å šæ§ãå®è£ ããã«ã¯ã次ã®ãããªããã€ãã®èŠå ãæ éã«æ€èšããå¿ èŠããããŸãã
- èšèªã®éžæïŒåŒ·åãªåã·ã¹ãã ãåããèšèªãéžæããããšãæåã®ã¹ãããã§ããRustãChapelãHaskellãªã©ã®èšèªã¯ãåªããåå®å šæ©èœãæäŸããŸãã
 - åã¢ãããŒã·ã§ã³ïŒåã¢ãããŒã·ã§ã³ã䜿çšããŠã倿°ãšé¢æ°ã®åãæç€ºçã«æå®ãããšãã³ãŒãã®æç¢ºããåäžããã³ã³ãã€ã©ããšã©ãŒããã£ããããã®ã«åœ¹ç«ã¡ãŸãã
 - éçåæïŒéçåæããŒã«ã䜿çšããŠåãšã©ãŒããã®ä»ã®æœåšçãªåé¡ããã§ãã¯ãããšãã³ãŒãã®ä¿¡é Œæ§ãããã«åäžããŸãã
 - ãã¹ãïŒåå®å šãªã³ãŒããæåŸ ã©ããã«åäœããããšã確èªããã«ã¯ã培åºçãªãã¹ããäžå¯æ¬ ã§ãã
 - ã©ã€ãã©ãªèšèšïŒåå®å šæ§ã念é ã«çœ®ããŠã©ã€ãã©ãªãèšèšãããšããŠãŒã¶ãŒã³ãŒãã®ãšã©ãŒãé²ãããšãã§ããŸãã
 
äŸïŒPythonã§ã®åã¢ãããŒã·ã§ã³ã®äœ¿çšïŒmypyã䜿çšïŒ
            
from typing import List
def process_data(data: List[float]) -> float:
    """Calculates the average of a list of floating-point numbers."""
    if not data:
        return 0.0
    return sum(data) / len(data)
data_points: List[float] = [1.0, 2.0, 3.0, 4.0]
average: float = process_data(data_points)
print(f"The average is: {average}")
            
          
        ãã®Pythonã®äŸã§ã¯ãåãã³ãïŒã¢ãããŒã·ã§ã³ïŒãš`mypy`ãéçåãã§ãã¯ã«äœ¿çšããŠããŸããPythonã¯åçåä»ãã§ãããåãã³ãã䜿çšãããšã倿°ãšé¢æ°ã®åŒæ°ã®äºæ³ãããåãæå®ã§ããããã`mypy`ã¯å®è¡åã«åãšã©ãŒããã£ããã§ããŸãããã®ã¢ãããŒãã«ãããç¹ã«ããŒã¿åæãšã¹ã¯ãªããäœæã«ãããŠãéçåä»ãã®å©ç¹ã®ããã€ããPythonããŒã¹ã®HPCã¯ãŒã¯ãããŒã«ããããããšãã§ããŸãã
åå®å šæ§ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿
åå®å šæ§ã¯å€ãã®å©ç¹ãæäŸããŸãããããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããå Žåã«ãã£ãŠã¯ãåãã§ãã¯ã«ãã£ãŠãªãŒããŒãããã远å ãããå®è¡é床ãäœäžããå¯èœæ§ããããŸãããã ããææ°ã®ã³ã³ãã€ã©ã¯ãå€ãã®å Žåãåå®å šãªã³ãŒããæé©åããŠãããã©ãŒãã³ã¹ã®äœäžãæå°éã«æããããæé€ãããããããšãã§ããŸããå Žåã«ãã£ãŠã¯ãåæ å ±ã«ãã£ãŠã³ã³ãã€ã©ãããç©æ¥µçãªæé©åãå®è¡ã§ããããã«ãªããããã©ãŒãã³ã¹ãåäžããããšããããŸãã
ããšãã°ãRustã®ãŒãã³ã¹ãæœè±¡åã䜿çšãããšãéçºè ã¯ããã©ãŒãã³ã¹ãç ç²ã«ããããšãªããåå®å šãªã³ãŒããäœæã§ããŸããåæ§ã«ãChapelã®ã°ããŒãã«ãã¥ãŒæœè±¡åã«ãããã³ã³ãã€ã©ã¯äžŠåèšç®ããã广çã«æé©åã§ããŸããåå®å šæ§ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ãèšèªãã³ã³ãã€ã©ãããã³ç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«å€§ããäŸåããŸãã
HPCåå®è£ ã«ããã課é¡ãžã®å¯ŸåŠ
HPCã«åå®å šæ§ãå®è£ ããã«ã¯ãããã€ãã®èª²é¡ããããŸãã
- ã¬ã¬ã·ãŒã³ãŒãïŒå€ãã®HPCã¢ããªã±ãŒã·ã§ã³ã¯FortranãšC/C++ã§èšè¿°ãããŠããã匷åãªåå®å šæ©èœããããŸããããããã®ã³ãŒããåå®å šãªèšèªã«ç§»è¡ããã«ã¯ãå€å€§ãªåŽåããããå¯èœæ§ããããŸãã
 - ããã©ãŒãã³ã¹ã«é¢ããæžå¿µïŒäžéšã®éçºè ã¯ãããã©ãŒãã³ã¹ã®ãªãŒããŒãããã«é¢ããæžå¿µãããåå®å šãªèšèªã®æ¡çšãèºèºããŠããŸãããããã®æžå¿µã«å¯ŸåŠããã«ã¯ãæ éãªãã³ãããŒã¯ãšæé©åãå¿ èŠã§ãã
 - åŠç¿æ²ç·ïŒåå®å šãªèšèªã¯ãåŸæ¥ã®HPCèšèªãããåŠç¿æ²ç·ãæ¥ãªããšããããããŸããæ¡çšãä¿é²ããã«ã¯ããã¬ãŒãã³ã°ãšæè²ãäžå¯æ¬ ã§ãã
 - ã©ã€ãã©ãªãšã³ã·ã¹ãã ïŒåå®å šãªHPCèšèªã®ã©ã€ãã©ãªãšã³ã·ã¹ãã ã¯ãFortranããã³C/C++ã®ã©ã€ãã©ãªãšã³ã·ã¹ãã ã»ã©æçããŠããªãå¯èœæ§ããããŸããéèŠãªã©ã€ãã©ãªã®éçºãšç§»æ€ãéèŠã§ãã
 
åå®å šãªHPCéçºã®ãã¹ããã©ã¯ãã£ã¹
HPCã§åå®å šæ§ã广çã«æŽ»çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- é©åãªèšèªãéžæããïŒRustãChapelãªã©ãåå®å šæ§ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåããèšèªãéžæããŸãã
 - åã¢ãããŒã·ã§ã³ã䜿çšããïŒåã¢ãããŒã·ã§ã³ã䜿çšããŠã倿°ãšé¢æ°ã®åãæç€ºçã«æå®ããŸãã
 - éçåæãæå¹ã«ããïŒéçåæããŒã«ã䜿çšããŠãåãšã©ãŒããã®ä»ã®æœåšçãªåé¡ããã§ãã¯ããŸãã
 - ãŠããããã¹ããäœæããïŒãŠããããã¹ããäœæããŠãåå®å šãªã³ãŒãã®æ£ç¢ºæ§ãæ€èšŒããŸãã
 - ãããã¡ã€ã«ãšæé©åãè¡ãïŒåå®å šãªã³ãŒãããããã¡ã€ã«ããŠæé©åããããã©ãŒãã³ã¹èŠä»¶ãæºãããŠããããšã確èªããŸãã
 - 段éçãªã¢ãããŒããæ¡çšããïŒæ¢åã®HPCã³ãŒããåå®å šãªèšèªã«ç§»è¡ããããã«ã段éçãªã¢ãããŒããæ¡çšããããšãæ€èšããŠãã ããã
 
å®éã®äŸãšã±ãŒã¹ã¹ã¿ãã£
åå®å šãªã¹ãŒããŒã³ã³ãã¥ãŒãã£ã³ã°ã¯ãŸã é²åããŠããåéã§ãããããã€ãã®ãããžã§ã¯ããçµç¹ã¯ãã§ã«ãã®å¯èœæ§ãåãå ¥ããŠããŸãã
- ExaBiomeãããžã§ã¯ãïŒãã®ãããžã§ã¯ãã§ã¯ãRustãæŽ»çšããŠããšã¯ãµã¹ã±ãŒã«ã³ã³ãã¥ãŒãã£ã³ã°çšã®é«æ§èœãã€ãªã€ã³ãã©ããã£ã¯ã¹ããŒã«ãéçºããèšç®éçŽçãªç§åŠåéã«ãããRustã®å®çšæ§ã瀺ããŠããŸãã
 - CERNã§ã®ç ç©¶ïŒCERNã®ç ç©¶è ã¯ãè€éãªããŒã¿æ§é ãå®å šãã€å¹ççã«åŠçã§ããRustã®èœåãèªèãã髿§èœããŒã¿åŠçãã€ãã©ã€ã³ã®éçºã«Rustã䜿çšããããšãæ€èšããŠããŸãã
 - 髿§èœããŒã¿åæïŒäŒæ¥ã¯ãããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã®äž¡æ¹ãå¿ èŠãªããŒã¿åæãã©ãããã©ãŒã ãæ§ç¯ããããã«ãScalaïŒJVMäžã§å®è¡ãããJava HPCã©ã€ãã©ãªã掻çšã§ããïŒãªã©ã®åå®å šãªèšèªã䜿çšããŠããŸãã
 
HPCã«ãããåå®å šæ§ã®å°æ¥
ã·ã¹ãã ãããè€éã§èŠæ±ãå³ãããªãã«ã€ããŠãåå®å šæ§ã¯HPCã§ãŸããŸãéèŠãªåœ¹å²ãæããããã«ãªããŸããæ°ããåå®å šãªèšèªãšããŒã«ã®éçºãšãåå®å šæ§ã®å©ç¹ã«å¯Ÿããèªèã®é«ãŸãããHPCã³ãã¥ããã£ã§ã®æ¡çšãä¿é²ããŸããHPCã·ã¹ãã ãé²åãç¶ããã«ã€ããŠãåå®å šãªããã°ã©ãã³ã°ã¯ãç§åŠããã³ãšã³ãžãã¢ãªã³ã°ã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãä¿å®æ§ãããã³ããã©ãŒãã³ã¹ã確ä¿ããããã«äžå¯æ¬ ã«ãªããŸãã
çµè«
åå®å šããã°ã©ãã³ã°ã¯ãå ç¢ã§ä¿¡é Œæ§ã®é«ãHPCãœãããŠã§ã¢ãéçºãããšãã課é¡ã«å¯ŸåŠããããã®èª¬åŸåã®ããã¢ãããŒããæäŸããŸããã³ã³ãã€ã«æã«å³å¯ãªã«ãŒã«ãé©çšããããšã«ãããåå®å šãªèšèªã¯ãšã©ãŒãæ©æã«ãã£ããããã³ãŒãã®ä¿å®æ§ãåäžãããã³ãŒãã®ç§»æ€æ§ãé«ããããšãã§ããŸãã課é¡ã¯æ®ã£ãŠããŸãããHPCã«ãããåå®å šæ§ã®å©ç¹ã¯å€§ããããã®æ¡çšã¯ä»åŸæ°å¹Žéã§å¢å ããå¯èœæ§ããããŸããåå®å šãªããã°ã©ãã³ã°ååãæ¡çšããããšã¯ã次äžä»£ã®é«æ§èœã³ã³ãã¥ãŒãã£ã³ã°ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®éèŠãªã¹ãããã§ãã